package com.gangan.model;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.Email;

/**
 * <p>
 * 
 * </p>
 *
 * @author jobob
 * @since 2019-09-07
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tl_order")
@ApiModel(value="预约订单")
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 订单号
     */
//    @ApiModelProperty(value="订单号")
//    private String orderSn;

    /**
     * 代理人自增主键
     */
    @ApiModelProperty(value="用户Id")
    private Integer userId;

    /**
     * 医生自增主键
     */
    @ApiModelProperty(value="医生ID自增主键")
    private Integer doctorId;



    /**
     * 就医地点
     */
    @ApiModelProperty(value="就医地点")
    private String address;

    /**
     * 费用- 暂不清楚如何收费，以及计算方式。所以暂时先写一个字段表示
     */
    @ApiModelProperty(value="费用")
    private BigDecimal price;

    /**
     * 预约起始时间 -因预约的时间是一个范围，因此保存起始与结束
     */
    @ApiModelProperty(value="预约开始时间段")
    private LocalDateTime appStartTime;

    /**
     * 预约结束时间 -因预约的时间是一个范围，因此保存起始与结束
     */
    @ApiModelProperty(value="预约结束时间段")
    private LocalDateTime appEndTime;

    /**
     * 订单状态, 0-未确认,1-预约成功,2-待诊,3-已完成,4-取消/预约失败
     */
    @ApiModelProperty(value="订单状态, 0-未确认,1-预约成功,2-待诊,3-已完成,4-取消/预约失败")
    private Integer status;

    /**
     * 预约创建时间
     */
    @ApiModelProperty(value="预约创建时间")
    private LocalDateTime createTime;

    /**
     * 预约修改时间
     */
    @ApiModelProperty(value="预约修改时间")
    private LocalDateTime updateTime;

    @ApiModelProperty(value="医生电话")
    private String doc_phone;

    @ApiModelProperty(value="医生电话")
    private String doc_email;

    @ApiModelProperty(value="就诊人ID")
    private Integer customerId;

    @ApiModelProperty(value="就诊人姓名")
    private String patientName;

    @ApiModelProperty(value="就诊人英文名")
    private String patientEnname;

    @ApiModelProperty(value="就诊人性别")
    private String patientSex;

    @ApiModelProperty(value="就诊人年龄")
    private Integer patientAge;

    @ApiModelProperty(value="就诊人电话")
    private String patientPhone;

    @ApiModelProperty(value="就诊人身份证号码")
    private String patientIdcard;

    @ApiModelProperty(value="备注")
    private String mark;

    @ApiModelProperty(value="病人类型0:新诊 1:旧诊")
    private Integer patientType;

    @ApiModelProperty(value="预约人(用户)")
    private String userName;

    @TableLogic
    @ApiModelProperty(value="逻辑删除识别",example="false")
    private boolean delFlag;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getDoctorId() {
        return doctorId;
    }

    public void setDoctorId(Integer doctorId) {
        this.doctorId = doctorId;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public LocalDateTime getAppStartTime() {
        return appStartTime;
    }

    public void setAppStartTime(LocalDateTime appStartTime) {
        this.appStartTime = appStartTime;
    }

    public LocalDateTime getAppEndTime() {
        return appEndTime;
    }

    public void setAppEndTime(LocalDateTime appEndTime) {
        this.appEndTime = appEndTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }

    public String getDoc_phone() {
        return doc_phone;
    }

    public void setDoc_phone(String doc_phone) {
        this.doc_phone = doc_phone;
    }

    public String getDoc_email() {
        return doc_email;
    }

    public void setDoc_email(String doc_email) {
        this.doc_email = doc_email;
    }

    public Integer getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Integer customerId) {
        this.customerId = customerId;
    }

    public String getPatientName() {
        return patientName;
    }

    public void setPatientName(String patientName) {
        this.patientName = patientName;
    }

    public String getPatientEnname() {
        return patientEnname;
    }

    public void setPatientEnname(String patientEnname) {
        this.patientEnname = patientEnname;
    }

    public String getPatientSex() {
        return patientSex;
    }

    public void setPatientSex(String patientSex) {
        this.patientSex = patientSex;
    }

    public Integer getPatientAge() {
        return patientAge;
    }

    public void setPatientAge(Integer patientAge) {
        this.patientAge = patientAge;
    }

    public String getPatientPhone() {
        return patientPhone;
    }

    public void setPatientPhone(String patientPhone) {
        this.patientPhone = patientPhone;
    }

    public String getPatientIdcard() {
        return patientIdcard;
    }

    public void setPatientIdcard(String patientIdcard) {
        this.patientIdcard = patientIdcard;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public Integer getPatientType() {
        return patientType;
    }

    public void setPatientType(Integer patientType) {
        this.patientType = patientType;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

}
